﻿using ConfExpert.Forms.Base;
using ConfExpert.Forms.Depo.Aksesuar;
using ConfExpert.Utility;
using DevExpress.XtraBars;
using DevExpress.XtraEditors;
using DevExpress.XtraEditors.Repository;
using DevExpress.XtraGrid.Views.Base;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraReports.UI;
using DevTeam;
using System;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;

namespace ConfExpert.Forms.Depo
{
    public partial class AksesuarCikisTalepleri : XForm
    {
        public AksesuarCikisTalepleri()
        {
            InitializeComponent();
        }

        BindingSource bsTalepLines, bsTalep;
        private void AksesuarCikisTalepleri_Load(object sender, EventArgs e)
        {

            gvTalep.Init("GetAllAksesuarTalep", MyDept, false);
            gvTalep.AddDetailGrid(gvTalepLinesByDepo, "AksesuarCikisTalebiId");

            gvTalep.AddColumn("ToplamCikilan", typeof(int), "SUM(Child({FK}).ToplamCikilan)");
            gvTalep.AddColumn("ToplamAdet", typeof(int), "SUM(Child({FK}).TalepMiktari)");
            gvTalepLinesByDepo.AddColumn("isOpen", typeof(int), "Parent({FK}).stGenelId");
            gvTalepLinesByDepo.AddColumn("C", typeof(int), "IIF(Isnull(KalanMiktar,0) > 0 and Isnull(RaftakiMiktar,0) > 0 , 1, 0)");
            gvTalep.AddColumn("C", typeof(int), "SUM(Child({FK}).C)");
            gvTalep.MakeColumnInvisible("C");
            gvTalepLinesByDepo.MakeColumnInvisible("C");


            bsTalep = (BindingSource)gvTalep.DataSource;
            bsTalepLines = (BindingSource)gvTalepLinesByDepo.DataSource;
            bsTalepLines.Filter = "ISNULL(KalanMiktar,0)>0 or isOpen=2";

            gvTalep.FormatAsNumber(0, "ToplamAdet", "ToplamCikilan");
            gvTalep.FormatAsDateTime("OlusturulmaTarihi");

            gvTalepLinesByDepo.FormatAsNumber(0, "RaftakiMiktar", "ToplamCikilan", "KalanMiktar", "CikilacakMiktar", "TalepMiktari", "CikilabilirMiktar");
            gvTalep.SetCaptions("AksesuarCikisTalebiId:TalepNo");

            gvTalepLinesByDepo.MakeColumnInvisible("isOpen", "AksesuarCikisTalebiId", "AksesuarCikisTalebiLinesId");
            gvTalep.MakeColumnInvisible("isAksesuarDepo", "isAkfilDepo", "Boyama");

            gvTalepLinesByDepo.AddSummary("TalepMiktari", "CikilacakMiktar", "KalanMiktar", "ToplamCikilan", "CikilabilirMiktar", "RaftakiMiktar");

            gvTalep.Columns["CikisTipi"].ColumnEdit = RI(Rp.HareketTipi);

            gvTalepLinesByDepo.ShowingEditor += gvTalepLines_ShowingEditor;
            gvTalep.ShowingEditor += gvTalep_ShowingEditor;
            gvTalepLinesByDepo.ValidateRow += gvTalepLines_ValidateRow;
            gvTalepLinesByDepo.RowStyle += gvTalepLines_RowStyle;
            gvTalep.RowCellStyle += gvTalep_RowCellStyle;
            gvTalepLinesByDepo.RowCellStyle += gvTalepLinesByDepo_RowCellStyle;
            gvTalep.FocusedRowChanged += gvTalep_FocusedRowChanged;
            cbCikilmisTalepler.CheckedChanged += cbCikilmisTalepler_CheckedChanged;
            cbCikilmisSatirlar.CheckedChanged += cbCikilmisSatirlar_CheckedChanged;
            cbCikilabilirTalepler.CheckedChanged += cbCikilabilirTalepler_CheckedChanged;
            bbiSave.ItemClick += bbiSave_ItemClick;

            if (ytk(253))
            {
                bbiSave.Visibility = BarItemVisibility.Always;
                GridManager gm = GridManager.GetManager(gvTalep);
                gm.GridMenu.AddMenu("Çıkılabilecek Miktarları Yaz", FillQty);
                gm.GridMenu.AddMenu("Çıkış Yap", createShip);
                gm.GridMenu.AddMenu("Talebi Kapat", closeShip);
                gm.GridMenu.AddMenu("Aksesuar Çıkış Talep Formu-Önizleme", PrintAksesuarTalepPreview,true);
                gm.GridMenu.AddMenu("Aksesuar Çıkış Talep Formu", PrintAksesuarTalep);
                gm.GridMenu.AddMenu("Düğme Boyama Raporu", DugmeBoyamaRaporu);
                gm.GridMenu.AddMenu("Ortak Aksesuar Etiketi", OrtakAksesuarEtiketi);
                if (ytk(234))//Kadir Akış ise...
                    gm.GridMenu.AddMenu("Eksikleri Diğer Ayrımlardan Karşıla", EksikleriTamamla);
            }

            splitContainerControl1.AutoSize();
            
            (gvTalep.Columns["KaynakId"].ColumnEdit as RepositoryItemGridLookUpEdit).EditValueChanged += AksesuarCikisTalepleri_EditValueChanged;

            gvTalep.AddSummary("ToplamAdet");
            BestFitColumnsForThisForm();

        }

        private void PrintAksesuarTalepPreview(object sender, EventArgs e)
        {
            PrintFoy(true);
        }
        void PrintAksesuarTalep(object sender, EventArgs e)
        {
            PrintFoy(false);
        }

        private void PrintFoy(bool IsPreview)
        {
            if (gvTalep.FocusedRowHandle > -1)
            {
                Talep = gvTalep.GetSelectedValues("AksesuarCikisTalebiId");
                DataTable dtTalepler = gvTalep.DataTable().Select("AksesuarCikisTalebiId in (" + Talep + ")").CopyToDataTable();
                int Atelye = dtTalepler.Rows[0]["CariId"].ToInt();
                int TalepAdedi = dtTalepler.Rows.Count;
                int AtelyeAdedi = dtTalepler.Select("CariId =" + Atelye).Length;
                if (AtelyeAdedi < TalepAdedi && TalepAdedi > 1)
                    throw new ApplicationException("Seçtiğiniz satırlarda farklı atölyeler seçili !");

                if (Talep != "")
                {
                    DataRow[] drCeki = gvTalep.DataTable().Select("AksesuarCikisTalebiId in (" + Talep + ") and Isnull(Ceki,0) = 0");
                    if (drCeki.Length > 0 && !IsPreview)
                    {
                        if (XtraMessageBox.Show("Devam etmeniz halinde sistem uygun stoklardan kaydırma yapacaktır. Devam etmek istiyor musunuz ?", "Critical", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No)
                            return;

                        ExecuteNonQuery("UpdCekiColumn", Talep);
                        gvTalep.RefreshDataSource(true, "GetAllAksesuarTalep", MyDept, cbCikilmisTalepler.Checked);
                        BestFitColumnsForThisForm();
                    }

                    Rapor.Aksesuar.AksesuarCikisTalepFormu aks = new Rapor.Aksesuar.AksesuarCikisTalepFormu(Talep, IsPreview);
                    aks.ShowPreviewDialog();
                }
            }
        }
        private void EksikleriTamamla(object sender, EventArgs e)
        {
            int AksesuarCikisTalebiId = gvTalep.GetFocusedRowCellValue("AksesuarCikisTalebiId").ToInt();
            int stGenelId = gvTalep.GetFocusedRowCellValue("stGenelId").ToInt();
            int BrandId = gvTalep.GetFocusedRowCellValue("BrandId").ToInt();
            int SezonId = gvTalep.GetFocusedRowCellValue("SezonId").ToInt();
            string OrderRef = gvTalep.GetFocusedRowCellValue("OrderRef").ToStr();

            if (stGenelId == 1)
            {
                using (AksesuarCikisTransfer ay = new AksesuarCikisTransfer(AksesuarCikisTalebiId, BrandId, SezonId, OrderRef))
                {
                    if (ay.ShowDialog() == DialogResult.OK)
                    {
                        gvTalep.RefreshDataSource(true, "GetAllAksesuarTalep", MyDept, cbCikilmisTalepler.Checked);
                        BestFitColumnsForThisForm();
                    }
                }
            }
            else
                ShowErrorMessage("Kapatılmış bir çıkış talebine transfer yapamazsınız !");
        }

        void cbCikilabilirTalepler_CheckedChanged(object sender, ItemClickEventArgs e)
        {
            bsTalep.Filter = cbCikilabilirTalepler.Checked ? "ISNULL(C,0)>0 " : "";
        }

        private void OrtakAksesuarEtiketi(object sender, EventArgs e)
        {
            string TalepIds = gvTalep.GetSelectedValues("AksesuarCikisTalebiId");
            DataTable dtTalepler = gvTalep.DataTable().Select("AksesuarCikisTalebiId in (" + TalepIds + ")").CopyToDataTable();
            int Atelye = dtTalepler.Rows[0]["CariId"].ToInt();
            int TalepAdedi = dtTalepler.Rows.Count;
            int AtelyeAdedi = dtTalepler.Select("CariId =" + Atelye).Length;
            if (AtelyeAdedi < TalepAdedi && TalepAdedi > 1)
                throw new ApplicationException("Seçtiğiniz satırlarda farklı atölyeler seçili !");

            if (TalepIds != "")
            {
                Aksesuar.OrtakAksesuarEtiketi oa = new Aksesuar.OrtakAksesuarEtiketi(TalepIds);
                oa.ShowDialog();
            }
        }

        void gvTalepLinesByDepo_RowCellStyle(object sender, RowCellStyleEventArgs e)
        {
            if (e.RowHandle > -1)
            {
                string Boyama = gvTalepLinesByDepo.GetRowCellValue(e.RowHandle, "BoyamaDurumu").ToStr();
                switch (e.Column.FieldName)
                {
                    case "BoyamaDurumu":
                        if (Boyama != "")
                            e.Appearance.BackColor = e.Appearance.BackColor2 = Color.SkyBlue;   //LightGray;
                        else
                            e.Appearance.Combine((e.RowHandle & 1) != 0 ? gvTalepLinesByDepo.Appearance.EvenRow : gvTalepLinesByDepo.Appearance.OddRow);
                        return;
                }
            }
        }

        void gvTalep_FocusedRowChanged(object sender, FocusedRowChangedEventArgs e)
        {
            int Boyama = gvTalep.GetFocusedRowCellValue("Boyama").ToInt();
            if (Boyama == 1 && ytk(253))
                bbiBoyama.Visibility = BarItemVisibility.Always;
            else
                bbiBoyama.Visibility = BarItemVisibility.Never;
        }

        void cbCikilmisSatirlar_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (cbCikilmisSatirlar.Checked == false)
                bsTalepLines.Filter = "ISNULL(KalanMiktar,0)>0 or isOpen=2";
            else
                bsTalepLines.Filter = "";
        }

        void cbCikilmisTalepler_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            gvTalep.RefreshDataSource(true, "GetAllAksesuarTalep", MyDept, cbCikilmisTalepler.Checked);
            BestFitColumnsForThisForm();
        }

        void gvTalep_RowCellStyle(object sender, RowCellStyleEventArgs e)
        {
            if (e.RowHandle > -1)
            {
                int Boyama = gvTalep.GetRowCellValue(e.RowHandle, "Boyama").ToInt();
                int Ceki = gvTalep.GetRowCellValue(e.RowHandle, "Ceki").ToInt();
                switch (e.Column.FieldName)
                {
                    case "AksesuarCikisTalebiId":
                        if (Boyama != 0)
                            e.Appearance.BackColor = e.Appearance.BackColor2 = Color.SkyBlue;   //LightGray;
                        else
                            e.Appearance.Combine((e.RowHandle & 1) != 0 ? gvTalep.Appearance.EvenRow : gvTalep.Appearance.OddRow);
                        return;
                    case "Ceki":
                        if (Ceki == 0)
                            e.Appearance.BackColor = e.Appearance.BackColor2 = Color.LightPink;   //LightGray;
                        else
                            e.Appearance.Combine((e.RowHandle & 1) != 0 ? gvTalep.Appearance.EvenRow : gvTalep.Appearance.OddRow);
                        return;
                }
            }
        }

        private void DugmeBoyamaRaporu(object sender, EventArgs e)
        {
            int CikisTalebi = gvTalep.GetFocusedRowCellValue("AksesuarCikisTalebiId").ToInt();
            int BrandId = gvTalep.GetFocusedRowCellValue("BrandId").ToInt();
            if (CikisTalebi > 0)
            {
                Rapor.Aksesuar.xrDugmeBoyamaRaporu aks = new Rapor.Aksesuar.xrDugmeBoyamaRaporu(CikisTalebi, BrandId, "GetDugmeBoyamaRaporu");
                aks.ShowPreviewDialog();
            }
        }

        void closeShip(object sender, EventArgs e)
        {
            if (XtraMessageBox.Show("Talebi kapatmak istediğinize emin misiniz?", "Kritik!", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No)
                return;
            int handle = gvTalep.FocusedRowHandle;
            DataRow dr = gvTalep.GetDataRow(handle);
            if (handle > -1)
            {
                int TalepId = dr["AksesuarCikisTalebiId"].ToInt();
                ExecuteNonQuery("CloseAksesuarCikisTalebi", TalepId);
                gvTalep.RefreshDataSource(true, "GetAllAksesuarTalep", MyDept, cbCikilmisTalepler.Checked);
                BestFitColumnsForThisForm();
            }

        }

        void AksesuarCikisTalepleri_EditValueChanged(object sender, EventArgs e)
        {
            gvTalep.CloseEditor();
            gvTalep.SetFocusedRowCellValue("CariId", null);
        }


        private void BestFitColumnsForThisForm()
        {
            gvTalepLinesByDepo.OptionsView.EnableAppearanceOddRow = false;
            gvTalepLinesByDepo.OptionsView.EnableAppearanceEvenRow = false;
            //gvTalepLinesByDepo.Columns["RaftakiMiktar"].Caption="CikilabilirMiktar";
            gvTalep.BestFitColumns();
            gvTalepLinesByDepo.BestFitColumns();

            gvTalep.Columns["Notes"].Width = 100;
            gvTalep.Columns["DosyaNo"].Width = 100;
        }



        void gvTalepLines_RowStyle(object sender, RowStyleEventArgs e)
        {
            GridView view = sender as GridView;

            int qty = intParse(view.GetRowCellValue(e.RowHandle, "KalanMiktar"));
            int rafQty = intParse(view.GetRowCellValue(e.RowHandle, "CikilabilirMiktar"));
            int isOpen = intParse(view.GetRowCellValue(e.RowHandle, "isOpen"));
            if (qty > 0 && qty > rafQty && isOpen == 1)
            {
                e.Appearance.BackColor = Color.LightPink;
            }
        }

        void gvTalepLines_ValidateRow(object sender, ValidateRowEventArgs e)
        {
            GridView view = sender as GridView;

            int qtySelected = intParse(view.GetRowCellValue(e.RowHandle, "CikilacakMiktar"));
            int qty = intParse(view.GetRowCellValue(e.RowHandle, "KalanMiktar"));
            int rafQty = intParse(view.GetRowCellValue(e.RowHandle, "CikilabilirMiktar"));

            if (qtySelected > rafQty)
            {
                e.Valid = false;
                view.SetColumnError(view.Columns["CikilacakMiktar"], "Çıkılacak olan miktar, çıkılabilir miktardan fazla olamaz !");
            }
        }

        void gvTalep_ShowingEditor(object sender, CancelEventArgs e)
        {
            GridView gv = sender as GridView;

            DataRow dr = gv.GetFocusedDataRow();
            int cariId = dr["CariId"].ToInt();
            if (dr["stGenelId"].ToInt() == 1 || cariId == 0)
                e.Cancel =
                    gv.FocusedColumn.FieldName != "KaynakId" &&
                    gv.FocusedColumn.FieldName != "CariId";
            else
                e.Cancel = true;
        }
        
        string Talep;
        
        void FillQty(object sender, EventArgs e)
        {
            //DataRow dr = gvTalep.GetDataRow(gvTalep.FocusedRowHandle);
            int AksesuarCikisTalebiId = gvTalep.GetFocusedRowCellValue("AksesuarCikisTalebiId").ToInt(); // intParse(dr["AksesuarCikisTalebiId"]);
            DataRow[] drTalepLines = gvTalepLinesByDepo.DataTable().Select("AksesuarCikisTalebiId=" + AksesuarCikisTalebiId + "and (Isnull(BoyamaDurumu,'')='' or Isnull(BoyamaDurumu,'')='Boyandı' )");

            DataTable dtTalepLines = null;
            if (drTalepLines.Length > 0)
                dtTalepLines = drTalepLines.CopyToDataTable();

            foreach (DataRow item in drTalepLines)
            {
                int AksesuarId = item["AksesuarId"].ToInt();
                DataRow[] drAyniAksesuar = dtTalepLines.Select("AksesuarId = " + AksesuarId);

                if (drAyniAksesuar.Length > 1)//Düğme boyamalı çıkışlarda aynı aksesuardan 2 tane olabiliyor. Çıkılacak adetleri düzgün girmek için bu şartı ekledim
                {
                    DataRow drBoyamalı = gvTalepLinesByDepo.DataTable().Select("Isnull(BoyamaDurumu,'')='Boyandı' and AksesuarId =" + AksesuarId + " and AksesuarCikisTalebiId = " + AksesuarCikisTalebiId)[0];
                    DataRow drBoyamasız = gvTalepLinesByDepo.DataTable().Select("Isnull(BoyamaDurumu,'')='' and AksesuarId =" + AksesuarId + " and AksesuarCikisTalebiId = " + AksesuarCikisTalebiId)[0];
                    int CikilabilirMiktar = item["CikilabilirMiktar"].ToInt();

                    if (drBoyamalı["KalanMiktar"].ToInt() <= CikilabilirMiktar && drBoyamalı["KalanMiktar"].ToInt() > 0)
                    {
                        drBoyamalı["CikilacakMiktar"] = drBoyamalı["KalanMiktar"];
                        CikilabilirMiktar -= drBoyamalı["KalanMiktar"].ToInt();
                    }
                    else if (drBoyamalı["KalanMiktar"].ToInt() > CikilabilirMiktar && drBoyamalı["RaftakiMiktar"].ToInt() > 0)
                    {
                        drBoyamalı["CikilacakMiktar"] = drBoyamalı["CikilabilirMiktar"];
                        CikilabilirMiktar = 0;
                    }

                    if (drBoyamasız["KalanMiktar"].ToInt() <= CikilabilirMiktar && drBoyamasız["KalanMiktar"].ToInt() > 0)
                    {
                        drBoyamasız["CikilacakMiktar"] = drBoyamasız["KalanMiktar"];
                    }
                    else if (drBoyamasız["KalanMiktar"].ToInt() > CikilabilirMiktar && drBoyamasız["RaftakiMiktar"].ToInt() > 0)
                    {
                        drBoyamasız["CikilacakMiktar"] = CikilabilirMiktar;
                    }

                }
                else
                {
                    if (item["KalanMiktar"].ToInt() <= item["CikilabilirMiktar"].ToInt() && item["KalanMiktar"].ToInt() > 0)
                    {
                        item["CikilacakMiktar"] = item["KalanMiktar"];
                    }
                    else if (item["KalanMiktar"].ToInt() > item["CikilabilirMiktar"].ToInt() && item["RaftakiMiktar"].ToInt() > 0)
                    {
                        item["CikilacakMiktar"] = item["CikilabilirMiktar"];
                    }
                }
            }
        }

        void createShip(object sender, EventArgs e)
        {
            gvTalepLinesByDepo.EndEditing();

            int AksesuarCikisTalebiId = gvTalep.GetFocusedRowCellValue("AksesuarCikisTalebiId").ToInt(); // intParse(dr["AksesuarCikisTalebiId"]);
            DataRow[] drTalepLines = gvTalepLinesByDepo.DataTable().Select("AksesuarCikisTalebiId=" + AksesuarCikisTalebiId + "and (Isnull(BoyamaDurumu,'')='' or Isnull(BoyamaDurumu,'')='Boyandı' )");

            DataTable dtTalepLines = null;
            if (drTalepLines.Length > 0)
                dtTalepLines = drTalepLines.CopyToDataTable();

            foreach (DataRow item in drTalepLines)
            {
                int AksesuarId = item["AksesuarId"].ToInt();
                int CikilabilirMiktar = item["CikilabilirMiktar"].ToInt();
                DataRow[] drAyniAksesuar = dtTalepLines.Select("AksesuarId = " + AksesuarId);

                if (drAyniAksesuar.Length > 1)//Düğme boyamalı çıkışlarda aynı aksesuardan 2 tane olabiliyor. Çıkılacak adetleri düzgün girmek için bu şartı ekledim
                {
                    int CikilacakMiktar = dtTalepLines.Compute("SUM(CikilacakMiktar)", "AksesuarId =" + AksesuarId).ToInt();
                    string AksesuarStokKod = AppSession.Lookups.V_Aksesuar.FindByAksesuarId(AksesuarId).StokKod;
                    if (CikilacakMiktar > CikilabilirMiktar)
                    {
                        XtraMessageBox.Show(AksesuarStokKod + " kodlu aksesuardan çıkılabilir miktardan daha fazla çıkamazsınız !");
                        return;
                    }
                }
            }

            DataRow dr = gvTalep.GetDataRow(gvTalep.FocusedRowHandle);
            if (intParse(dr["stGenelId"]) != 1)
            {
                XtraMessageBox.Show("İptal edilmiş ya da çıkılmış talep üzerinde işlem yapamazsınız !");
                return;
            }
            if (gvTalepLinesByDepo.DataTable().Select("ISNULL(CikilacakMiktar,0)>0 and AksesuarCikisTalebiId=" + dr["AksesuarCikisTalebiId"].ToString()).Length == 0)
            {
                XtraMessageBox.Show("Lütfen çıkmak istediğiniz aksesuarların miktarını giriniz !");
                return;
            }
            if (dr["stGenelId"].ToInt() == 1)
            {
                int TalepId = dr["AksesuarCikisTalebiId"].ToInt();
                string IrsaliyeNo = dr["DosyaNo"].ToString();
                string xml = gvTalepLinesByDepo.SerializeChanges();

                int PartiId = ExecuteScalar("InsAksesuarCikisPartisi", xml, TalepId, IrsaliyeNo, WhoAmI, MyDept).ToInt();

                if (isProduction)
                    ExecuteNonQuery("SendAksesuarCikisMail", PartiId);

                gvTalep.RefreshDataSource(true, "GetAllAksesuarTalep", MyDept, cbCikilmisTalepler.Checked);
                BestFitColumnsForThisForm();
                XtraMessageBox.Show("Çıkış işlemi tamamlandı.");
            }

        }

        void gvTalepLines_ShowingEditor(object sender, CancelEventArgs e)
        {
            DataRow dr = gvTalep.GetDataRow(gvTalep.FocusedRowHandle);
            string StPaint = gvTalepLinesByDepo.GetFocusedRowCellValue("BoyamaDurumu").ToStr();
            if (intParse(dr["stGenelId"]) == 1 && (StPaint == "" || StPaint == "Boyandı"))
                e.Cancel = gvTalepLinesByDepo.FocusedColumn.FieldName != "CikilacakMiktar";
            else
                e.Cancel = true;
        }

        private void bbiSave_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            gvTalep.EndEditing();
            gvTalep.Update("AksesuarCikisTalebiId,KaynakId,CariId,BrandId,SezonId", "AksesuarCikisTalebi");
            gvTalep.RefreshDataSource(true, "GetAllAksesuarTalep", MyDept, cbCikilmisTalepler.Checked);
            BestFitColumnsForThisForm();
        }

        private void bbiBoyama_ItemClick(object sender, ItemClickEventArgs e)
        {
            gvTalep.EndEditing();
            int CikisTalebi = gvTalep.GetFocusedRowCellValue("AksesuarCikisTalebiId").ToInt();
            if (CikisTalebi > 0)
            {
                DataRow dr = gvTalep.GetDataRow(gvTalep.FocusedRowHandle);
                DataRow[] talepLines = gvTalepLinesByDepo.DataTable().Select("AksesuarCikisTalebiId=" + CikisTalebi + " and Isnull(BoyamaDurumu,'')='Boyanacak' and Isnull(CikilabilirMiktar,0) < Isnull(KalanMiktar,0)");

                if (talepLines.Length > 0)
                {
                    ShowErrorMessage("Boyamaya gidecek düğmelerin tamamı tek seferde çıkılmalıdır !");
                    return;
                }
                string xml = gvTalepLinesByDepo.SerializeChanges();

                ExecuteNonQuery("InsAksesuarBoyamaCikisPartisi", CikisTalebi, WhoAmI);
                gvTalep.RefreshDataSource(true, "GetAllAksesuarTalep", MyDept, cbCikilmisTalepler.Checked);
                ShowInfoMessage("Boyama çıkışı yapıldı");
            }
        }
    }
}